/**
 * output package name
 */
package com.kingdee.eas.custom.basedata.client;

import java.awt.event.ActionEvent;
import java.sql.Timestamp;
import java.util.Date;

import org.apache.log4j.Logger;

import com.kingdee.bos.ctrl.swing.event.SelectorEvent;
import com.kingdee.bos.dao.IObjectValue;
import com.kingdee.bos.metadata.entity.EntityViewInfo;
import com.kingdee.bos.metadata.entity.FilterInfo;
import com.kingdee.bos.metadata.entity.FilterItemInfo;
import com.kingdee.bos.ui.face.CoreUIObject;
import com.kingdee.eas.base.permission.UserInfo;
import com.kingdee.eas.basedata.assistant.ProjectInfo;
import com.kingdee.eas.basedata.org.CtrlUnitInfo;
import com.kingdee.eas.common.client.SysContext;
import com.kingdee.eas.common.client.UIContext;
import com.kingdee.eas.custom.synchronizationDataFacadeFactory;
import com.kingdee.eas.custom.basedata.AbstractProjectGroupInfo;
import com.kingdee.eas.custom.basedata.ProjectGroupCollection;
import com.kingdee.eas.custom.basedata.ProjectGroupFactory;
import com.kingdee.eas.custom.basedata.ProjectGroupInfo;
import com.kingdee.eas.framework.CoreBaseCollection;
import com.kingdee.eas.framework.client.EditUI;
import com.kingdee.eas.util.client.MsgBox;
/**
 * output class name
 */
public class ProjectGroupEditUI extends AbstractProjectGroupEditUI
{
    private static final Logger logger = CoreUIObject.getLogger(ProjectGroupEditUI.class);
    @Override
	public void onLoad() throws Exception {
		super.onLoad();
		
		CtrlUnitInfo  company= SysContext.getSysContext().getCurrentCtrlUnit();
    	String companyId = company.getId().toString();
    	EntityViewInfo view = new EntityViewInfo(); 
		FilterInfo filter = new FilterInfo();
		filter.getFilterItems().add(new FilterItemInfo("cu.id", companyId));
		view.setFilter(filter);
		project.setEntityViewInfo(view);
		
		
		GeneraProjectMultiListUI selector = new GeneraProjectMultiListUI(this);
		project.setSelector(selector);
		project.setEnabledMultiSelection(true);
		project.setEditFormat("$number$");
		project.setDisplayFormat("$name$");
		project.setCommitFormat("$number$");
		
	}
    Object data = null;
    @Override
    protected void project_willShow(SelectorEvent e) throws Exception {
    	super.project_willShow(e);
    	  data = project.getData();
    	  
    	  GeneraProjectMultiListUI selector = new GeneraProjectMultiListUI(this,data);
  		  project.setSelector(selector);
 
    }
    
    
    @Override//业务校验
	protected void verifyInput(ActionEvent e) throws Exception {
		super.verifyInput(e);
			if(null == this.editData.get("treeid")){
				 MsgBox.showWarning("根目录下不可新增");
		   		 abort();
			}
			
			if (null == this.editData.get("project")) {
	   		   MsgBox.showWarning("预算项目不能为空");
	   		   abort();
	   		}else {
	   			String comId = ((AbstractProjectGroupInfo) this.editData).getTreeid().getId().toString();
	   			
				EntityViewInfo view = new EntityViewInfo(); 
				FilterInfo filter = new FilterInfo();
				filter.getFilterItems().add(new FilterItemInfo("treeid.id", comId));
				view.setFilter(filter);
				
				ProjectGroupCollection proje = ProjectGroupFactory.getRemoteInstance().getProjectGroupCollection(view);
				
				for (int i = 0; i < proje.size(); i++) {
					if(proje.get(i).getProject() !=null){
						String item1 = proje.get(i).getProject().getId().toString();
						
						if(item1.equals(((AbstractProjectGroupInfo) this.editData).getProject().getId().toString())){							
							MsgBox.showWarning("同一组别下不能有相同项目");
							abort();
						}	
				  }			
				}
			}
		 }
     	
	  /**
     * output actionSubmit_actionPerformed
     */
    public void actionSubmit_actionPerformed(ActionEvent e) throws Exception
    {
//        super.actionSubmit_actionPerformed(e);
    	if(null == this.editData.get("treeid")){
			 MsgBox.showWarning("根目录下不可新增");
	   		 abort();
		}
    	
    	Object[]  p=new Object[0];
    	p= (Object[])project.getValue();
    	if (p==null || p[0]==null ) {
	   		   MsgBox.showWarning("预算项目不能为空");
	   		   abort();
	   	}else {
   			String comId = ((AbstractProjectGroupInfo) this.editData).getTreeid().getId().toString();
			EntityViewInfo view = new EntityViewInfo(); 
			FilterInfo filter = new FilterInfo();
			filter.getFilterItems().add(new FilterItemInfo("treeid.id", comId));
			view.setFilter(filter);
			ProjectGroupCollection proje = ProjectGroupFactory.getRemoteInstance().getProjectGroupCollection(view);
			
			for (int i = 0; i < proje.size(); i++) {
				if(proje.get(i).getProject() !=null){
					String item1 = proje.get(i).getProject().getId().toString();
					
					Object[] s= (Object[]) project.getData();
					for(Object s1:s){
						ProjectInfo  pro = (ProjectInfo)s1;
						if(item1.equals(pro.getId().toString())){							
							MsgBox.showWarning("同一组别下不能有相同项目");
							abort();
						}
					}
						
			  }			
			}
		}
        
		Object[] s= (Object[]) project.getData();
		CoreBaseCollection c=new CoreBaseCollection();
		
		for(Object s1:s){
			ProjectInfo  pro = (ProjectInfo)s1;  
			CtrlUnitInfo  cu= SysContext.getSysContext().getCurrentCtrlUnit(); //获取cu
			UserInfo cre = SysContext.getSysContext().getCurrentUserInfo();	//获取当前用户				
			Timestamp ct = new Timestamp(new Date().getTime());		//获取当前时间
			
			ProjectGroupInfo inf=new ProjectGroupInfo();
			inf.setProject(pro);
			inf.setCreator(cre);
			inf.setLastUpdateUser(cre);
			inf.setCU(cu);			
			inf.setCreateTime(ct);		
			inf.setLastUpdateTime(ct);
			
			inf.setTreeid(editData.getTreeid());
			
			c.add(inf);   		
    	 }
		ProjectGroupFactory.getRemoteInstance().addnew(c); //保存
		
		((EditUI) getUIWindow().getUIObject()).setSaved(true); //关闭编辑界面后列表界面刷新
		this.uiWindow.close();//窗口关闭
		
		

    }
    
    
    /**
     * output class constructor
     */
    public ProjectGroupEditUI() throws Exception
    {
        super();
    }
    /**
     * output loadFields method
     */
    public void loadFields()
    {
        super.loadFields();
    }

    /**
     * output storeFields method
     */
    public void storeFields()
    {
        super.storeFields();
    }

    /**
     * output actionPageSetup_actionPerformed
     */
    public void actionPageSetup_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionPageSetup_actionPerformed(e);
    }

    /**
     * output actionExitCurrent_actionPerformed
     */
    public void actionExitCurrent_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionExitCurrent_actionPerformed(e);
    }

    /**
     * output actionHelp_actionPerformed
     */
    public void actionHelp_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionHelp_actionPerformed(e);
    }

    /**
     * output actionAbout_actionPerformed
     */
    public void actionAbout_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionAbout_actionPerformed(e);
    }

    /**
     * output actionOnLoad_actionPerformed
     */
    public void actionOnLoad_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionOnLoad_actionPerformed(e);
    }

    /**
     * output actionSendMessage_actionPerformed
     */
    public void actionSendMessage_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionSendMessage_actionPerformed(e);
    }

    /**
     * output actionCalculator_actionPerformed
     */
    public void actionCalculator_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionCalculator_actionPerformed(e);
    }

    /**
     * output actionExport_actionPerformed
     */
    public void actionExport_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionExport_actionPerformed(e);
    }

    /**
     * output actionExportSelected_actionPerformed
     */
    public void actionExportSelected_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionExportSelected_actionPerformed(e);
    }

    /**
     * output actionRegProduct_actionPerformed
     */
    public void actionRegProduct_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionRegProduct_actionPerformed(e);
    }

    /**
     * output actionPersonalSite_actionPerformed
     */
    public void actionPersonalSite_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionPersonalSite_actionPerformed(e);
    }

    /**
     * output actionProcductVal_actionPerformed
     */
    public void actionProcductVal_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionProcductVal_actionPerformed(e);
    }

    /**
     * output actionExportSave_actionPerformed
     */
    public void actionExportSave_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionExportSave_actionPerformed(e);
    }

    /**
     * output actionExportSelectedSave_actionPerformed
     */
    public void actionExportSelectedSave_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionExportSelectedSave_actionPerformed(e);
    }

    /**
     * output actionKnowStore_actionPerformed
     */
    public void actionKnowStore_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionKnowStore_actionPerformed(e);
    }

    /**
     * output actionAnswer_actionPerformed
     */
    public void actionAnswer_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionAnswer_actionPerformed(e);
    }

    /**
     * output actionRemoteAssist_actionPerformed
     */
    public void actionRemoteAssist_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionRemoteAssist_actionPerformed(e);
    }

    /**
     * output actionPopupCopy_actionPerformed
     */
    public void actionPopupCopy_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionPopupCopy_actionPerformed(e);
    }

    /**
     * output actionHTMLForMail_actionPerformed
     */
    public void actionHTMLForMail_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionHTMLForMail_actionPerformed(e);
    }

    /**
     * output actionExcelForMail_actionPerformed
     */
    public void actionExcelForMail_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionExcelForMail_actionPerformed(e);
    }

    /**
     * output actionHTMLForRpt_actionPerformed
     */
    public void actionHTMLForRpt_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionHTMLForRpt_actionPerformed(e);
    }

    /**
     * output actionExcelForRpt_actionPerformed
     */
    public void actionExcelForRpt_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionExcelForRpt_actionPerformed(e);
    }

    /**
     * output actionLinkForRpt_actionPerformed
     */
    public void actionLinkForRpt_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionLinkForRpt_actionPerformed(e);
    }

    /**
     * output actionPopupPaste_actionPerformed
     */
    public void actionPopupPaste_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionPopupPaste_actionPerformed(e);
    }

    /**
     * output actionToolBarCustom_actionPerformed
     */
    public void actionToolBarCustom_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionToolBarCustom_actionPerformed(e);
    }

    /**
     * output actionCloudFeed_actionPerformed
     */
    public void actionCloudFeed_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionCloudFeed_actionPerformed(e);
    }

    /**
     * output actionCloudShare_actionPerformed
     */
    public void actionCloudShare_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionCloudShare_actionPerformed(e);
    }

    /**
     * output actionCloudScreen_actionPerformed
     */
    public void actionCloudScreen_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionCloudScreen_actionPerformed(e);
    }

    /**
     * output actionXunTongFeed_actionPerformed
     */
    public void actionXunTongFeed_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionXunTongFeed_actionPerformed(e);
    }

    /**
     * output actionSave_actionPerformed
     */
    public void actionSave_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionSave_actionPerformed(e);
    }

   

    /**
     * output actionCancel_actionPerformed
     */
    public void actionCancel_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionCancel_actionPerformed(e);
    }

    /**
     * output actionCancelCancel_actionPerformed
     */
    public void actionCancelCancel_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionCancelCancel_actionPerformed(e);
    }

    /**
     * output actionFirst_actionPerformed
     */
    public void actionFirst_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionFirst_actionPerformed(e);
    }

    /**
     * output actionPre_actionPerformed
     */
    public void actionPre_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionPre_actionPerformed(e);
    }

    /**
     * output actionNext_actionPerformed
     */
    public void actionNext_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionNext_actionPerformed(e);
    }

    /**
     * output actionLast_actionPerformed
     */
    public void actionLast_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionLast_actionPerformed(e);
    }

    /**
     * output actionPrint_actionPerformed
     */
    public void actionPrint_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionPrint_actionPerformed(e);
    }

    /**
     * output actionPrintPreview_actionPerformed
     */
    public void actionPrintPreview_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionPrintPreview_actionPerformed(e);
    }

    /**
     * output actionCopy_actionPerformed
     */
    public void actionCopy_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionCopy_actionPerformed(e);
    }

    /**
     * output actionAddNew_actionPerformed
     */
    public void actionAddNew_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionAddNew_actionPerformed(e);
    }

    /**
     * output actionEdit_actionPerformed
     */
    public void actionEdit_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionEdit_actionPerformed(e);
    }

    /**
     * output actionRemove_actionPerformed
     */
    public void actionRemove_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionRemove_actionPerformed(e);
    }

    /**
     * output actionAttachment_actionPerformed
     */
    public void actionAttachment_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionAttachment_actionPerformed(e);
    }

    /**
     * output actionSubmitOption_actionPerformed
     */
    public void actionSubmitOption_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionSubmitOption_actionPerformed(e);
    }

    /**
     * output actionReset_actionPerformed
     */
    public void actionReset_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionReset_actionPerformed(e);
    }

    /**
     * output actionMsgFormat_actionPerformed
     */
    public void actionMsgFormat_actionPerformed(ActionEvent e) throws Exception
    {
        super.actionMsgFormat_actionPerformed(e);
    }

    /**
     * output getBizInterface method
     */
    protected com.kingdee.eas.framework.ICoreBase getBizInterface() throws Exception
    {
        return com.kingdee.eas.custom.basedata.ProjectGroupFactory.getRemoteInstance();
    }

    /**
     * output setDataObject method
     */
    public void setDataObject(IObjectValue dataObject) 
    {
        super.setDataObject(dataObject);
        if(STATUS_ADDNEW.equals(getOprtState())) {
            editData.put("treeid",(com.kingdee.eas.custom.basedata.ProjectGroupTreeInfo)getUIContext().get(UIContext.PARENTNODE));
        }
    }

    /**
     * output createNewData method
     */
    protected com.kingdee.bos.dao.IObjectValue createNewData()
    {
        com.kingdee.eas.custom.basedata.ProjectGroupInfo objectValue = new com.kingdee.eas.custom.basedata.ProjectGroupInfo();
        objectValue.setCreator((com.kingdee.eas.base.permission.UserInfo)(com.kingdee.eas.common.client.SysContext.getSysContext().getCurrentUser()));
		
        return objectValue;
    }

}